# 1. 添加配置文件
PRODUCT_COPY_FILES 常用于产品的配置文件中,在本文中就是 Rice14.mk 文件,用于将源码的文件拷贝到 Android 文件系统中。
这里看一个源码中的示例:
aosp/build/target/product/core_64_bit.mk
中有如下内容:
PRODUCT_COPY_FILES += system/core/rootdir/init.zygote64_32.rc:system/etc/init/hw/init.zygote64_32.rc
这一行表示将源码中的 system/core/rootdir/init.zygote64_32.rc
拷贝到 Android 文件系统的 system/etc/init/hw/init.zygote64_32.rc 文件中。
init.zygote64_32.rc 是 init 程序使用的一个配置文件,当我们的程序需要配置文件时,也可以参考以上的方式来完成。
# 2. 删除已有模块
有的时候,我们需要删除系统中已有的模块,比如我们系统的应用场景是广告牌、电视,那我们就需要删除电话,通信录等应用。下面以删除通信录(Contacts)为例,演示如何操作:
# 在源码的 build 目录下
grep -r "Contacts" .
./make/target/product/handheld_product.mk: Contacts \
./make/target/product/mainline_arm64.mk: system/priv-app/Contacts/Contacts.apk \
./make/target/product/base_system.mk: ContactsProvider \
./make/core/build-system.html:Dialer, Contacts, etc. This will probably change or go away when we switch
2
3
4
5
6
在源码的 build 目录下的 ./make/target/product/handheld_product.mk
中删除 PRODUCT_PACKAGES 变量的 Contacts
接着重新编译启动模拟器:
source build/envsetup.sh
lunch Rice14-eng
make clean
make -j16
emulator
2
3
4
5
可以看到,Contacts 应用已经没有了:
# 参考资料
- How to include prebuilt library in Android.bp file? (opens new window)
- Android系统开发入门-5.添加预编译模块 (opens new window)
- Android系统开发入门-6.删除Android原生内置APK (opens new window)
- Android.bp 文件中引入aar、jar、so库正确编译方法(值得收藏) (opens new window)
- 在AOSP中添加jar包和aar包依赖 (opens new window)
# 关于
我叫阿豪,2015 年本科毕业于国防科学技术大学指挥信息系统专业,毕业后从事信息化装备的研发工作,主要研究方向是 Android Framework 与 Linux Kernel。
如果你对 Android Framework 感兴趣或者正在学习 Android Framework,可以关注我的微信公众号和抖音,我会持续分享我的学习经验,帮助正在学习的你少走一些弯路。学习过程中如果你有疑问或者你的经验想要分享给大家可以添加我的微信,我拉你进技术交流群。